package core

import (
	"github.com/pkg/errors"
	"io"
	"net/http"
	"net/url"
)

//
//func main() {
//	var username, password string
//	flag.StringVar(&username, "username", "", "账号")
//	flag.StringVar(&password, "password", "", "密码")
//	flag.Parse()
//	if len(username) == 0 || len(password) == 0 {
//		flag.Usage()
//		log.Fatalln(errors.New("账号或密码 不可为空"))
//	}
//
//	ret, err := login(username, password)
//	if err != nil {
//		sendMessage(err.Error())
//		log.Fatalln(err)
//	}
//
//	log.Println(ret)
//	sendMessage(ret)
//}

//func sendMessage(message string) {
//	noti := toast.Notification{
//		AppID:   "Microsoft.Windows.Shell.RunDialog",
//		Title:   "校园网登录",
//		Message: message,
//	}
//
//	err := noti.Push()
//	if err != nil {
//		log.Println(err)
//	}
//}

func getYyjsAuthUrl() (*url.URL, error) {
	resp, err := http.Get(originUrl)
	if err != nil {
		return nil, err
	}

	defer resp.Body.Close()

	return resp.Request.URL, nil
}

func LoginYYJSWIFI(username, password string) (result string, err error) {
	url, err := getYyjsAuthUrl()
	if err != nil {
		return "", errors.WithMessage(err, "获取验证地址失败")
	}
	if url.Host == originHost {
		return "", ErrLoggedIn
	}

	loginUrl := url.Scheme + `://` + url.Host + "/portalLogin"

	query := url.Query()
	query.Add("username", username)
	query.Add("password", password)
	resp, err := http.PostForm(loginUrl, query)
	if err != nil {
		return "", err
	}

	defer resp.Body.Close()
	bytes, err := io.ReadAll(resp.Body)
	if err != nil {
		return "", err
	}

	return string(bytes), nil
}
